package org.NooLab.compare;

import org.NooLab.compare.utilities.math.DistanceControlProperties;

public interface CompareIntf {

	
	public double calculateSimilarity( double[] vector1, double[] vector2 );
	
	public double calculateSimilarity( String[] features1, double[] vector1, 
            						   String[] features2, double[] vector2 );
	
	
	public double calculateSimilarity( double[] vector2 ) ;
	
	/**
	 * before calling this variant of the method, the comparator/calculator has to know about the reference vector ,
	 * to which this one should be compared
	 * </br></br>
	 *  
	 * @param features2 , could be null, or empty (=[0]), if empty, this implies that missing values will be handled
	 *  according to method 2 (adjusted distance value cost)
	 *  
	 *  </br></br>
	 *  
	 * @param vector2
	 * @return
	 */
	public double calculateSimilarity( String[] features2, double[] vector2 ) ;
	
	public double calculateSimilarity( String[] items1, String[] items2 );
	
	/** returns the currently set properties object for distance control parameters */
	public DistanceControlProperties getDistanceCtrl();
	
	public void setDistanceCtrl( DistanceControlProperties distancectrl ) ; 
}
